/**
 * @author lhy
 * @date 2018/10/31
 * @Description:
 */
Sequelize = require('sequelize');
const Op = Sequelize.Op;
const operatorsAliases = {
  $eq: Op.eq, // =
  $ne: Op.ne, // id !=
  $gte: Op.gte, // id >=
  $gt: Op.gt, // id >
  $lte: Op.lte, // id <=
  $lt: Op.lt, // id <
  $not: Op.not, // 不是 TRUE
  $in: Op.in, // 在 [xx, xx] 之中
  $notIn: Op.notIn, // 不在 [xx, xx] 之中
  $is: Op.is,
  $like: Op.like, // '%hat' 包含 '%hat'
  $notLike: Op.notLike, // '%hat' 不包含 '%hat'
  $iLike: Op.iLike, // '%hat'  包含 '%hat' (不区分大小写)  (仅限 PG)
  $notILike: Op.notILike, // '%hat' 不包含 '%hat'  (仅限 PG)
  $regexp: Op.regexp, // '^[h|a|t]' 匹配正则表达式/~ '^[h|a|t]' (仅限 MySQL/PG)
  $notRegexp: Op.notRegexp, // '^[h|a|t]'  不匹配正则表达式/!~ '^[h|a|t]' (仅限 MySQL/PG)
  $iRegexp: Op.iRegexp, // '^[h|a|t]' ~* '^[h|a|t]' (仅限 PG)
  $notIRegexp: Op.notIRegexp, // '^[h|a|t]'  !~* '^[h|a|t]' (仅限 PG)
  $between: Op.between, // // 在 xx 和 xx 之间
  $notBetween: Op.notBetween, // 不在 xx 和 xx 之间
  $overlap: Op.overlap, // && [1, 2] (PG数组重叠运算符)
  $contains: Op.contains, // @> [1, 2] (PG数组包含运算符)
  $contained: Op.contained, // <@ [1, 2] (PG数组包含于运算符)
  $adjacent: Op.adjacent,
  $strictLeft: Op.strictLeft,
  $strictRight: Op.strictRight,
  $noExtendRight: Op.noExtendRight,
  $noExtendLeft: Op.noExtendLeft,
  $and: Op.and,
  $or: Op.or, // [{a: 5}, {a: 6}]  // (a = 5 或 a = 6)
  $any: Op.any,
  $all: Op.all,
  $values: Op.values,
  $col: Op.col
};
const config = require('../config').node

let database = {
  name: config.dbname,
  password: config.dbpassword,
  pool: {
    host: config.dbhost,
    port: config.dbport,
    dialect: 'mysql',
    pool: {
      // 如果并发增大，数据库连接发生瓶颈时，可逐步改大（每次加50）max,适当加大(每次加5)min
      max: 100,
      min: 5,
      // 等待连接时间，不宜设置过小
      acquire: 30000,
      // 指闲置的连接超过多少毫秒被释放,不宜设置过小
      idle: 10000
    },
    operatorsAliases: operatorsAliases
  }
}

module.exports = database
